package edu.cuit.zhuyimeng.ticket.service;

import edu.cuit.zhuyimeng.flight.api.dto.FlightInfoDTO;

import java.util.function.Consumer;

/**
 * 订票会话管理类
 */
public interface ITicketSessionManager {

    /**
     * 买票
     * @param flightInfoDTO 航班信息DTO
     * @return 是否成功
     */
    boolean buyTicket(FlightInfoDTO flightInfoDTO);

    /**
     * 退票
     * @param flightInfoDTO 航班信息DTO
     * @return 是否成功
     */
    boolean refundTicket(FlightInfoDTO flightInfoDTO);

    /**
     * 开启机票调度
     * @param flightInfoDTO 航班信息VO
     */
    void openTicketDispatch(FlightInfoDTO flightInfoDTO);

    /**
     * 关闭机票调度
     * @param flightID 航班ID
     */
    void closeTicketDispatch(Long flightID);

    /**
     * 判断是否售罄
     * @param flightID 航班ID
     * @return 是否售罄
     */
    boolean isSoldOut(Long flightID);

}
